import * as Cesium from "cesium"
/**
 * 生成两点之间的同纬度曲线的坐标集合
 * @param start 起点的笛卡尔坐标
 * @param end 终点的笛卡尔坐标
 * @param segments 分段数，用于控制曲线的精度
 * @returns 同纬度曲线的坐标集合
 */
export function generateSameLatitudeCurve(
  start: Cesium.Cartesian3,
  end: Cesium.Cartesian3,
  segments: number = 50,
): Cesium.Cartesian3[] {
  // 将起点和终点的笛卡尔坐标转换为经纬度坐标
  const startCartographic = Cesium.Cartographic.fromCartesian(start)
  const endCartographic = Cesium.Cartographic.fromCartesian(end)

  // 获取起点的纬度值，因为是同纬度曲线，所有点的纬度都相同
  const latitude = startCartographic.latitude

  // 获取起点和终点的经度值
  const startLongitude = startCartographic.longitude
  const endLongitude = endCartographic.longitude

  // 存储同纬度曲线的坐标集合
  const curvePoints: Cesium.Cartesian3[] = []

  // 在起点和终点的经度之间均匀取点
  for (let i = 0; i <= segments; i++) {
    const t = i / segments
    // 计算当前点的经度值
    const currentLongitude =
      startLongitude + t * (endLongitude - startLongitude)
    // 根据当前经度和固定的纬度生成笛卡尔坐标
    const point = Cesium.Cartesian3.fromRadians(currentLongitude, latitude)
    curvePoints.push(point)
  }

  return curvePoints
}
